package com.ns.sbs.oauth.menu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ns.core.vo.bs.BasicTreeVO;
import com.ns.core.vo.router.RouterVO;
import com.ns.sbs.oauth.menu.dto.MenuPageDto;
import com.ns.sbs.oauth.menu.entry.MenuEntry;
import com.ns.sbs.oauth.menu.vo.MenuEntryVO;

import java.util.List;

/**
 * 菜单业务接口层
 *
 * @author liaowei
 */
public interface IMenuService extends IService<MenuEntry> {
    /**
     * 分页查询
     *
     * @param menuPageDto 参数
     * @return MenuEntryVO
     */
    Page<MenuEntryVO> selectBy(MenuPageDto menuPageDto);

    /**
     * 获取用户动态菜单
     *
     * @param menus 菜单
     * @return 动态菜单
     */
    List<RouterVO> getDynamicMenu(List<Long> menus);


    /**
     * 获取用户权限菜单码
     *
     * @param menus 菜单
     * @return 权限菜单码
     */
    List<String> getMenuCode(List<Long> menus);

    /**
     * 获取服务菜单树
     *
     * @return BasicTreeVO
     */
    List<BasicTreeVO> getBasicMenu();

    /**
     * 根据服务id查询菜单
     *
     * @param sms 服务菜单那
     * @return BasicTreeVO
     */
    List<BasicTreeVO> getMenuByMid(List<Long> sms);

    /**
     * 获取当前服务的菜单集合
     *
     * @param sid 服务id
     * @return Long
     */
    List<Long> getServerMenus(Long sid);
}
